import { defineStore } from 'pinia'

export const useAppStore = defineStore('app', {
  state: () => ({
    // 侧边栏是否折叠
    collapsed: false,
    // 是否显示二级菜单
    showSubMenu: false,
    // 设备类型 desktop | mobile
    device: 'desktop',
    // 主题模式 light | dark
    theme: 'light',
    // 主题色
    primaryColor: '#1890ff',
    // 布局模式 side | top | mix
    layout: 'side',
    // 是否固定头部
    fixedHeader: true,
    // 是否显示标签页
    showTabs: true,
    // 是否显示面包屑
    showBreadcrumb: true,
    // 是否显示logo
    showLogo: true
  }),

  getters: {
    isMobile: (state) => state.device === 'mobile'
  },

  actions: {
    /**
     * 切换侧边栏折叠状态
     */
    toggleCollapsed() {
      this.collapsed = !this.collapsed
    },

    /**
     * 设置侧边栏折叠状态
     */
    setCollapsed(collapsed) {
      this.collapsed = collapsed
    },

    /**
     * 设置设备类型
     */
    setDevice(device) {
      this.device = device
      if (device === 'mobile') {
        this.collapsed = false
      }
    },

    /**
     * 切换主题
     */
    toggleTheme() {
      this.theme = this.theme === 'light' ? 'dark' : 'light'
    },

    /**
     * 设置主题
     */
    setTheme(theme) {
      this.theme = theme
    },

    /**
     * 设置主题色
     */
    setPrimaryColor(color) {
      this.primaryColor = color
    },

    /**
     * 设置布局模式
     */
    setLayout(layout) {
      this.layout = layout
    },

    /**
     * 设置是否固定头部
     */
    setFixedHeader(fixed) {
      this.fixedHeader = fixed
    },

    /**
     * 设置是否显示标签页
     */
    setShowTabs(show) {
      this.showTabs = show
    },

    /**
     * 设置是否显示二级菜单
     */
    setShowSubMenu(show) {
      this.showSubMenu = show
    }
  },

  // 持久化
  persist: {
    key: 'VBEN_ADMIN_APP',
    storage: localStorage,
    paths: ['collapsed', 'theme', 'primaryColor', 'layout', 'fixedHeader', 'showTabs', 'showBreadcrumb', 'showLogo']
  }
})
